import axios from "axios"
import { Modal, message } from "antd"

//创建一个axios示例
const service = axios.create({
    baseURL: 'https://shiquaner-api.zookingsoft.com', // api 的 base_url
    timeout: 6000, // request timeout
});

let token = '53e701c5fab6e56f3aa7e123716ebe6d'

// 请求拦截器
service.interceptors.request.use(
    (config) => {
        if (token) {
            // 让每个请求携带token-- ['Authorization']为自定义key 请根据实际情况自行修改
            config.headers.Authorization = token
        }
        config.headers['Content-Type'] = 'application/json' // 将token设置成请求头
        // config.headers.token = '53e701c5fab6e56f3aa7e123716ebe6d' // 将token设置成请求头

        return config;
    },
    (error) => {
        console.log(error); // for debug
        Promise.reject(error);
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        
        let { result:code, msg, data } = response.data

        // 有数据
        // if (data) {
        //     return Promise.resolve(data)
        // }

        if (code == 104) return message.error('token错误')

        if (code !== 20000) {
            message.error(msg)
            // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
            if (code === 50008 || code === 50012 || code === 50014) {
                Modal.confirm({
                    title: "重新登录?",
                    content:
                    "由于长时间未操作，您已被登出，可以取消继续留在该页面，或者重新登录",
                    okText: "重新登录",
                    cancelText: "取消",
                }).then(() => {
                    window.location.reload() // 为了重新实例化vue-router对象 避免bug
                })
            }
            return Promise.reject('error')
        } else {
            return msg
        }
    },
    (error) => {
        const { status } = error.response;
        if (status === 403) {
            Modal.confirm({
                title: "确定登出?",
                content:
                    "由于长时间未操作，您已被登出，可以取消继续留在该页面，或者重新登录",
                okText: "重新登录",
                cancelText: "取消",
                onOk() {
                    console.log('Ok')
                },
                onCancel() {
                    console.log("Cancel")
                },
            });
        }
        return Promise.reject(error)
    }
);

export default service
